package com.xoms.admin.service;

import com.xoms.admin.controller.res.bean.RAccountBean;
import com.xoms.admin.controller.res.bean.RAccountLoginBean;
import com.xoms.admin.controller.res.bean.RVertifyVCodeBean;
import com.xoms.admin.model.AccountBean;
import com.xoms.admin.service.res.PageResult;

/**
 * 账户业务
 * 
 * @author chengl
 *
 */
public interface AccountService {
	/**
	 * 账户登录
	 * 
	 * @param phoneNum
	 * @param password
	 * @return
	 */
	RAccountLoginBean login(String phoneNum, String password);

	/**
	 * 根据token获取账户
	 * 
	 * @param token
	 * @return
	 */
	RAccountLoginBean getAccountByToken(String token);

	/**
	 * 发送验证码
	 * 
	 * @param type
	 * @param phone
	 * @return
	 */
	boolean sendVCode(int type, String phone) throws Exception;

	/**
	 * 验证验证码
	 * 
	 * @param type
	 * @param phone
	 * @param vcode
	 * @return
	 */
	RVertifyVCodeBean vertifyVCode(int type, String phone, String vcode);

	/**
	 * 验证临时token，找回密码
	 * 
	 * @param tempToken
	 * @param pwd
	 * @param submitPwd
	 * @return
	 */
	boolean findPassword(String tempToken, String pwd, String submitPwd);

	/**
	 * 个人更新密码
	 * 
	 * @param account
	 * @param oldPwd
	 * @param newPwd
	 * @param submitPwd
	 * @return
	 */
	boolean updatePassword(AccountBean account, String oldPwd, String newPwd, String submitPwd);

	/**
	 * 获取管理员的列表
	 * 
	 * @param account
	 * @param roleType
	 * @param deptId 
	 * @param key
	 * @param page
	 * @param pagesize
	 * @return
	 */
	PageResult<RAccountBean> getAccounts(AccountBean account, int roleId, int deptId, String key, int page, int pagesize);

	/**
	 * 编辑管理员
	 * 
	 * @param account
	 * @param accid
	 * @param username
	 * @param name
	 * @param phoneNum
	 * @param roleType
	 * @return
	 */
	RAccountBean edit(AccountBean account, String accid, String icon, String name, String phoneNum, int deptId);

	/**
	 * 编辑密码
	 * 
	 * @param account
	 * @param accid
	 * @param password
	 * @return
	 */
	boolean editPwd(AccountBean account, String accid, String password);

	/**
	 * 启用
	 * 
	 * @param account
	 * @param accid
	 * @return
	 */
	boolean enable(AccountBean account, String accid);

	/**
	 * 禁用
	 * 
	 * @param account
	 * @param accid
	 * @return
	 */
	boolean disable(AccountBean account, String accid);
	
	/**
	 * 删除账号
	 * @param account
	 * @param accid
	 * @return
	 */
	boolean del(AccountBean account, String accid);

}
